實作完可以偵測人臉的哈爾特徵後,在將所有的訓練資料不需要的背景利用人臉偵測的框給剪裁掉。以下圖為例
在用模型進行訓練,運用Resnet的模型架構來實作人臉辨識,將影像灰階後放入已建立好的模型Resnet來訓練,使用adam來當作優化器,學習率調成0.007(需要時要一一嘗試)。
resnet_model = resnet_network((x, x, 1 ))
adam = tf.keras.optimizers.Adam(learning_rate=0.007)
model.compile(optimizer="adam", loss=mse, metrics=["mae", "acc"])
learning rate是模型學習訓練級的速度,learning rate越大訓練的越快,反之則越慢,因為Resnet的架構已經很深所以學習率需要調小一些,才較不容易overfitting,損失函數使用mse,但是自己定義的mse,才可以在訓練時因為資料不平均的情況,要多訓練已知者(Anchor)。
def mse_pred(y_true, y_pred,a1=0.1,a2=0.9):
E1=tf.where(tf.equal(y_true, 1), K.mean(K.square(y_pred-y_true), axis=-1), 0)
E2=tf.where(tf.equal(y_true, 0), K.mean(K.square(y_pred-y_true), axis=-1), 0)
total_loss=E1*a1+E2*a2
return total
在訓練時也要注意準確度是否有慢慢上升,如果訓練資料夠多,可以將資料分為訓練集和驗證集,利用驗證集的準確度較可避免模型學習訓練集學習太好,導致驗證集的準確度隨著epoch的增加反而下降。